
#include "Texto.h"

std::vector<Texto*> Texto::textList;

Texto::Texto(){
	font = NULL;
	fontSurface = NULL;
	texto = NULL;
	x = y = 0;
	visivel = true;

	fgColor.r = 255;
	fgColor.g = 255;
	fgColor.b = 255;

	bgColor.r = 0;
	bgColor.g = 0;
	bgColor.b = 0;
}

bool Texto::onLoad(char* fontFile, int size){

	font = TTF_OpenFont(fontFile,size);
	return (font != NULL);
}

void Texto::onRender(SDL_Surface* destSurface){
	if(visivel && destSurface != NULL && fontSurface != NULL)
		CSurface::OnDraw(destSurface,fontSurface, (int)x, (int)y);
}

void Texto::refreshSurface(){
	if(font)
		fontSurface = TTF_RenderText_Shaded(font,texto,fgColor,bgColor);	
}

void Texto::setText(char *str){
	texto = str;
	refreshSurface();
}

void Texto::onCleanup(){
	
	if(font)
		TTF_CloseFont(font);

	if(fontSurface)
		SDL_FreeSurface(fontSurface);

	font = NULL;
	fontSurface = NULL;
}

SDL_Surface* Texto::getTextSurface(){
	return fontSurface;
}

void Texto::center(){
	x = (float) WND_WIDTH / 2.0f - fontSurface->w / 2;
	y = (float) WND_HEIGHT / 2.0f;
}

void Texto::setVisivel(bool v){
	visivel = v;
}